#!/usr/bin/env python
"""
调试Celery任务执行
"""
import os
import django
import json
import time

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'keep_project0.settings')
django.setup()

from tools.myredis import mredis
from base.task import generate_user_logo_task

def debug_celery():
    """调试Celery任务执行"""
    print("=== Celery任务调试 ===")
    
    # 1. 添加一个测试任务到队列
    print("1. 添加测试任务到队列...")
    test_request = {
        'user_id': 3,
        'gender': 'M',
        'fitness_level': 'beginner',
        'timestamp': time.time()
    }
    
    mredis.list_push('logo_generation_queue', json.dumps(test_request))
    print(f"   已添加用户 {test_request['user_id']} 的请求到队列")
    
    # 2. 检查队列状态
    print("2. 检查队列状态...")
    queue_items = mredis.list_lrange('logo_generation_queue', 0, -1)
    print(f"   队列中有 {len(queue_items)} 个任务")
    
    # 3. 等待5秒，看Beat是否自动处理
    print("3. 等待5秒，看Beat是否自动处理...")
    for i in range(5):
        print(f"   等待 {i+1}/5 秒...")
        time.sleep(1)
    
    # 4. 再次检查队列状态
    print("4. 再次检查队列状态...")
    queue_items = mredis.list_lrange('logo_generation_queue', 0, -1)
    print(f"   队列中有 {len(queue_items)} 个任务")
    
    if len(queue_items) > 0:
        print("   Beat没有自动处理任务，手动执行...")
        generate_user_logo_task()
    else:
        print("   Beat已自动处理任务")
    
    # 5. 检查结果
    print("5. 检查处理结果...")
    result_data = mredis.get('logo_result_3')
    if result_data:
        try:
            result = json.loads(result_data)
            print(f"   处理结果: {result.get('success', False)} - {result.get('message', 'N/A')}")
            if result.get('success'):
                print(f"   Logo URL: {result.get('image_url', 'N/A')}")
        except:
            print(f"   原始结果: {result_data}")
    else:
        print("   暂无处理结果")
    
    print("=== 调试完成 ===")

if __name__ == '__main__':
    debug_celery()
